FIG. 1 is a block diagram illustrating an enterprise system 100. Enterprise system 100 is a multi-tier architecture implemented using a variety of different technologies at each sub-layer, including those based on the Java 2 Platform, Enterprise Edition™ (“J2EE”) standard (e.g., J2EE Specification, Version 1.4), the Microsoft .NET standard, the Advanced Business Application Programming (“ABAP”) standard developed by SAP AG, and the like.
Enterprise system 100 includes one or more client nodes 105 communicatively coupled to one or more server nodes 110, which are in turn communicatively coupled to one or more database nodes 115. A user interface 120 provides a graphical user interface (“GUI”) to enable users of client nodes 105 to interact with database nodes 115 (e.g., submit queries, input data, etc.) through server nodes 110. User interface 120 may be a proprietary application or a standard application, such a web browser (e.g., Internet Explorer or Netscape Navigator).
Server nodes 110 each include a business layer 125, a presentation layer 130, and an integration layer 135, which together form subcomponents of an Application Server (e.g., WebAS by SAP AG). Business layer 125 provides the business logic of the Application Server, enabling complex business processes to be implemented. In a J2EE environment, business layer 125 may include one or more Enterprise JavaBean (“EJB”) containers 140 each including one or more EJBs. The EJBs are Java based software modules that contain the actual business logic, while EJB container 140 encapsulates the EJBs in a Java based runtime environment that provides a host of common interfaces and services to the EJBs.
Presentation layer 130 describes the specific manner in which the results of business layer 125 are formatted for display on the user interface 120. The results may be formatted with aid of a web container 145 that supports both Servlets and JavaServer Pages (“JSPs”). The servlets provide server-side processing to generate the GUI and the JSPs are extensions of the Java servlet technology for providing dynamic content within the GUI.
Integration layer 135 ensures access to business functionalities from external resources. This is done using various services, connectors (middleware), communication protocols, and support for general data exchange formats (e.g., extensible markup language). For example, integration layer 135 may contain support for the following services: Java Database Connectivity (“JDBC”) Application Programming Interface (“API”), the Java Naming and Directory Interface (“JNDI”), the Java Messaging Service (“JMS”), the Java Transaction Service (“JTS”), the Java Transaction API (“JTA”), the J2EE Connector Architecture (“JCA”), and the like.
Multiple server nodes 110 may be grouped together to form a cluster of server nodes 110. Each server node 110 may support its own Application Server providing a sort of distributed computing environment. A dispatcher 150 may be provided to implement a load-balancing mechanism distributing service requests from client nodes 105 among server nodes 110 within the cluster. For example, dispatcher 150 may implement a round-robin load-balancing mechanism. Dispatcher 150 may be one of server nodes 110 having the task of dispatching service requests among server nodes 110 of the cluster.
The service requests are processed by server nodes 110 and subsequently provided to database nodes 115. Database nodes 115 offer up the requested data to server nodes 110, which in turn process and format the results for display on user interfaces 120 of client nodes 105.
Managing transactions between server nodes 110 and/or server nodes 110 and database nodes 115 requires use of various transaction management services. These services include those defined by the JTA, JTS, and JCA specifications. However, current implementations of these services are hierarchical in nature—building on top of each other. As such, these services have low scalability and objectionable overhead, particularly during high load intervals.